Модуль:Animal
local p = {} local arrData = mw.loadData( 'Module:DataAnimal' ) local common = require( "Module:Common" ) local id = "" local tp = "" local nameprod = "" --Список животных одной категории--* function p.list1(frame) tp = frame.args1 local data=getitems() local width=50 local root = common.getCreateTable() local arrHeadTable={ 'Уровень', 'Животные', 'Покупка ', 'Продукт ', 'Продажа 15px', 'Рост �� ', 'Доход в час 15px', 'Загон', } if tp "all" then arrHeadTable#arrHeadTable+1='Категория' end arrHeadTable#arrHeadTable+1='Корм' arrHeadTable#arrHeadTable+1='Локация' root: node(common.getCreateHeadTable(arrHeadTable)) local j=0 for i, v in ipairs(data) do if tp 'all'or v.tp tp then trbody =root:tag('tr') trbody:tag('td') :css('text-align', "center") :css('width', width+2) :wikitext((v.level~='' and 'c '..datai.level..' ур. ' or )..''..width..'px|center') trbody:tag('td') :wikitext(''..v.name..'') trbody:tag('td') :css('text-align', 'center') :wikitext(v.buy) trbody:tag('td') :css('text-align', 'center') :wikitext(v.prod) trbody:tag('td') :css('text-align', 'center') :wikitext(v.sell) trbody:tag('td') :css('text-align', 'center') :wikitext((v.tm and v.tm>60 and (v.tm/60)..' час.' or v.tm..' мин.' or '')) trbody:tag('td') :css('text-align', 'center') :wikitext(v.rez) trbody:tag('td') :wikitext((v.corall and '' or ''..v.corall..'')) if tp "all" then trbody:tag('td') :wikitext(''..v.tp..'') end trbody:tag('td') :wikitext((v.res '' and '' or ''..v.res..'')) trbody:tag('td') :wikitext((v.location '' and 'Любые' or ''..v.location..'')) j=j+1 end end local caption = root:tag('caption') :css('text-align', 'left') :wikitext("Всего: "..j) return tostring( root ) end --Получить список животных-- function getitems() local data={} local i=1 for key, v in pairs(arrData) do datai={name=v.name, tp=v.tp} datai.res=v.res and v.res or '' datai.buy =v.buy and v.buy or v.buyagro..'15px' datai.level =v.level and v.level or (v.levelagro and v.levelagro or ) datai.tm =v.tm and v.tm or '' datai.sell =v.sell and v.sell or '' datai.prod =v.nameprod and v.nameprod or v.name datai.corall =v.corall and v.corall or '' datai.rez =(v.tm and v.sell) and math.floor(v.sell/v.tm*100)/100*60 or '' datai.location =v.location and v.location or '' i=i+1 end table.sort(data,function( a, b ) return a.name < b.name end ) return data end function p.getView( frame ) id = frame.args1 nameprod=arrDataid.nameprod and arrDataid.nameprod or arrDataid.name return path().. infobox().. description().. feed().. placeBuy().. corall().. location().. ' Загружается на фабрики '..(require("Module:Factory").fab(nameprod)).. 'Category:Животные'.. '[[Category:'..arrDataid.tp..']]' end function feed() local text= if arrDataid.res then text=text..'Для производства продукции животное нужно кормить. Корм для животного: [['..arrDataid.res..']].' else text=text..'Корм для животного не требуется. Продукция производится автоматически.' end local root = mw.html.create( 'div' ) root:tag('h2'):wikitext('Корм для животного') root:tag('div') :wikitext(text) return tostring( root ) end function path() local root = mw.html.create( 'div' ) :css('font-size', '12px') :css('margin-bottom', '10px') :wikitext('[['..arrDataid.tp1..']] / [['..arrDataid.tp..']] / '..id) return tostring( root ) end function infobox() local root = mw.html.create( 'div' ) :addClass('infobox-crop') root:tag('div') :addClass('infobox-crop-h') :wikitext(id) root:tag('div') :attr('id','img-tree') :wikitext('center') local div1=root:tag('div') local item1_1=div1:tag('div') :addClass('item-spacing') :addClass('item-border') item1_1:tag('div') :addClass('item-label') :wikitext('Категория') item1_1:tag('div') :addClass('item-data') :wikitext('[['..arrDataid.tp..']]') local item1_2=div1:tag('div') :addClass('item-spacing') :addClass('item-border') item1_2:tag('div') :addClass('item-label') :wikitext('Продукт') item1_2:tag('div') :addClass('item-data') :wikitext(arrDataid.nameprod and arrDataid.nameprod or id) local item1_3=div1:tag('div') :addClass('item-spacing') :addClass('item-border') item1_3:tag('div') :addClass('item-label') :wikitext('Рост ��') item1_3:tag('div') :addClass('item-data') :wikitext(arrDataid.tm>60 and (arrDataid.tm/60)..' час.' or arrDataid.tm..' мин.') if (arrDataid.level) then local item1_31=div1:tag('div') :addClass('item-spacing') :addClass('item-border') item1_31:tag('div') :addClass('item-label') :wikitext('Уровень') item1_31:tag('div') :addClass('item-data') :wikitext(arrDataid.level) end local item1_4=div1:tag('div') :addClass('item-spacing') :addClass('item-border') item1_4:tag('div') :addClass('item-label') :wikitext('Локация') item1_4:tag('div') :addClass('item-data') :wikitext(arrDataid.location and '[['..arrDataid.location..']]' or 'Любая') root:tag('div') :addClass('infobox-crop-h-section') :wikitext('Цена') local div2=root:tag('div') local item2_1=div2:tag('div') :addClass('item-spacing') :addClass('item-border') item2_1:tag('div') :addClass('item-label') :wikitext('Покупка') local buy=(arrDataid.buy and arrDataid.buy..' 15px' or (arrDataid.buyagro and arrDataid.buyagro..' 15px')) item2_1:tag('div') :addClass('item-data') :wikitext(buy) local item2_2=div2:tag('div') :addClass('item-spacing') :addClass('item-border') item2_2:tag('div') :addClass('item-label') :wikitext('Продажа') item2_2:tag('div') :addClass('item-data') :wikitext(arrDataid.sell and arrDataid.sell..' 15px' or ) root:tag('div') :addClass('infobox-crop-h-section') :wikitext('Доход') if (arrDataid.tm and arrDataid.sell) then local div3=root:tag('div') local item3_1=div3:tag('div') :addClass('item-spacing') :addClass('item-border') item3_1:tag('div') :addClass('item-label') :wikitext('Доход в час') item3_1:tag('div') :addClass('item-data') :wikitext(((math.floor(arrDataid.sell/arrDataid.tm*100)/100)*60)..' 15px') end return tostring(root) end function description() local root = mw.html.create( 'div' ) root:tag('h2') :wikitext('Описание') root:tag('div') :wikitext('Животное покупается один раз, а продукцию с него можно собирать многократно.') root:tag('div') :wikitext('Продукцию можно собрать только после того, как только истечет время роста (производства продукции). У каждого животного свое индивидуальное время роста. Наведите курсор мышки на животное и увидите, сколько времени осталось до сбора продукции.') root:tag('div') :wikitext('Для сбора продукции щелкните мышкой по животному и продукция автоматически переместятся на склад.') root:tag('div') :wikitext('Собранную продукцию можно продать или переработать на фабрике.') local text= if arrDataid.tm then text='Время производства продукции составляет �� '..(arrDataid.tm>60 and (arrDataid.tm/60)..' час.' or arrDataid.tm..' мин.')..' ' if arrDataid.sell then text=text..' При этом ваш доход в час составит '.. ((math.floor(arrDataid.sell/arrDataid.tm*100)/100)*60).. ' 15px.' end root:tag('div') :css('margin-bottom','10px') :wikitext(text) end --Окупаемость-- text='' if arrDataid.buy then text=arrDataid.tm and 'Покупка животного окупится через '..tm(arrDataid.tm)..'' or "" else if arrDataid.buyagro then text='Окупаемость животного вычислить нельзя, т.к. животное покупается за агробаксы.' end end root:tag('div') :wikitext(text) --Уровень- root:tag('div') :wikitext('Животное можно купить:') local ul= root:tag('ul') local text=' Животное можно купить:'.. ' ' if arrDataid.buy then ul:tag('li') :wikitext((arrDataid.level and 'с '..arrDataid.level..' уровня ' or "")..'за '..arrDataid.buy..' 15px') end if arrDataid.buyagro then ul:tag('li') :wikitext((arrDataid.levelagro and 'с '..arrDataid.levelagro..' уровня ' or "")..'за '..arrDataid.buyagro..' 15px') end if arrDataid.buyagro1 then ul:tag('li') :wikitext('с '..arrDataid.levelagro1..' уровня за '..arrDataid.buyagro1..' 15px') end root:tag('div') :wikitext('Можно выращивать в поле и промзоне.') return tostring( root ) end function tm(data) local text='' text=arrDataid.buy/arrDataid.sell*data/60 if text<60 then text=(math.floor(text*100)/100)..' час.' else text=text/24 text=(math.floor(text*100)/100)..' дней.' end return text end function placeBuy() return "" end function corall() local corall=arrDataid.corall and arrDataid.corall or"" if arrDataid.yncorall then if arrDataid.yncorall 1 then corall='Животное можно выращивать только в загоне '..corall..'.' end if arrDataid.yncorall 2 then corall='Животное можно выращивать как в загоне '..corall..', так и без него.' end if arrDataid.yncorall 0 then corall='Животное выращивается без загона.' end else return '' end local root = mw.html.create( 'div' ) root:tag('h2'):wikitext('Выращивается в загонах') root:tag('div') :wikitext(corall) return tostring(root) end function location() local root = mw.html.create( 'div' ) root:tag('h2'):wikitext('Локация') root:tag('div'):wikitext(arrDataid.location and 'Можно выращивать только в локации [['..arrDataid.location..']].' or'Можно выращивать в любой локации.') return tostring(root) end --Список животных,которые едят корм-- function p.fab(frame) local id=type(frame) 'string'and frame or frame.args1 local arrData = mw.loadData( 'Module:DataAnimal' ) local data={} local i=1 for key,v in pairs(arrData) do if v.res id then datai={name=v.name} i=i+1 end end local text=' Можно скормить животным: ' if pcall(function () if data1.name nil then error() end end) then text=text..' ' table.sort(data,function( a, b ) return a.name < b.name end ) for i,v in ipairs(data) do text=text..' '..v.name..' ' end text=text..' ' else text=text..'Пока никому ' end return text end --Список продукци животных-- function p.product() local text=' ' data={} local j=1 for key,v in pairs(arrData) do dataj={fab=key, name=v.nameprod} j=j+1 end table.sort(data,function( a, b ) return a.name < b.name end ) for i,v in ipairs(data) do if i 1 then text=text....string.sub (v.name, 1,2)..' '..v.name..' ' else if string.sub (datai.name, 1,2)>string.sub (datai-1.name, 1,2) then text=text..' '....string.sub (v.name, 1,2)..' ' end if datai-1.name~=datai.name then text=text..' '..v.name..' ' end end end text=text..' ' return text end function p.list(frame) local id = frame.args1 local data=getitems() if #data 0 then return '' end local root = mw.html.create( 'div' ) root:tag('div') :wikitext('Продукт производится животными:') local ul=root:tag('ul') local tab=root:tag('table') tr=tab:tag('tr') local j=0 for i, v in ipairs(data) do if v.prod id then j=j+1 ul:tag('li') :wikitext(''..v.name..'') if math.fmod(j, 4) 0 then tr=tab:tag('tr') end td=tr:tag('td') :css('padding','10px') :css('vertical-align','top') td:tag('div') :css('padding','0 10px 0 0') :css('font-size','16px') :wikitext(''..v.name..'') td:tag('div') :wikitext('200px|'..v.name..'|link='..v.name..'') end end return tostring( root ) end return p